package com.yunhe.option.service.base;

import com.yunhe.common.exception.ArgumentErrorException;
import com.yunhe.common.exception.ObjectNotFoundException;
import com.yunhe.common.exception.UniqueConstraintsException;
import com.yunhe.option.domain.base.Whether;
import org.springframework.transaction.annotation.Transactional;

/**
 * 是否Service
 * @desc 是否类型服务类定义
 * @author anmeiyi
 */
public interface WhetherService {

    /**
     * 新增是否类型
     * @param whether 是否类型
     */
    @Transactional
    Whether createWhether(Whether whether)
            throws ArgumentErrorException, UniqueConstraintsException;

    /**
     * 删除是否类型
     * @param whetherId 是否类型Id
     */
    @Transactional
    void deleteWhether(Long whetherId);

    /**
     * 更新是否类型（更新全部字段）
     * @param whether 是否类型
     */
    @Transactional
    Whether updateWhether(Whether whether)
            throws ArgumentErrorException, UniqueConstraintsException, ObjectNotFoundException;

    /**
     * 更新是否类型（更新指定字段）
     * @param whetherId
     * @param code
     * @param name
     * @param title
     * @param sn
     * @param activity
     */
    @Transactional
    Whether updateWhether(Long whetherId,
                          Long code,
                          String name,
                          String title,
                          Long sn,
                          Boolean activity)
            throws ArgumentErrorException, UniqueConstraintsException, ObjectNotFoundException;

    /**
     *获得全部是否类型对象
     */
    @Transactional
    Iterable<Whether> findIndustryCategories();
}
